From 18ce2c7f4cbe1b921f0e9064690f8b661c3ada43 Mon Sep 17 00:00:00 2001 From: tsteven4 <13596209+tsteven4@users.noreply.github.com> Date: Mon, 1 Jun 2020 14:50:26 -0600 Subject: [PATCH] fix Qt 5.15.0 Wdeprecated-declarations warnings for (#584) QXmlDefaultHandler QXmlInputSource QXmlSimpleReader as suggested use QXmlStreamReader instead. --- gui/gpx.cc | 58 +++++++++++++++++++++++++++++++++++------------------- gui/gpx.h | 9 ++++++--- 2 files changed, 44 insertions(+), 23 deletions(-) diff --git a/gui/gpx.cc b/gui/gpx.cc index e5355dcc8..461610a8b 100644 --- a/gui/gpx.cc +++ b/gui/gpx.cc @@ -22,10 +22,11 @@ //------------------------------------------------------------------------ -#include -#include -#include -#include +#include // for QFile +#include // for QIODevice, QIODevice::ReadOnly +#include // for QStringRef +#include // for QXmlStreamAttributes +#include // for QXmlStreamReader, QXmlStreamReader::Characters, QXmlStreamReader::EndDocument, QXmlStreamReader::EndElement, QXmlStreamReader::Invalid, QXmlStreamReader::StartElement #include "gpx.h" @@ -46,7 +47,7 @@ static bool trackIsEmpty(const GpxTrack& trk) return count <=2 ; } -class GpxHandler: public QXmlDefaultHandler +class GpxHandler { public: GpxHandler() @@ -74,9 +75,8 @@ public: elementState state; QList stateStack; - bool startElement(const QString& /*namespaceURI*/, - const QString& localName, const QString& /*qName*/, - const QXmlAttributes& atts) override + void startElement(const QStringRef& localName, + const QXmlStreamAttributes& atts) { if (localName == "wpt") { currentWpt = GpxWaypoint(); @@ -131,12 +131,9 @@ public: //fprintf(stderr, "localName: %s name: %s\n", //localName.toStdString().c_str(), qName.toStdString().c_str()); } - return true; } - bool endElement(const QString& /*namespaceURI*/, - const QString& localName, - const QString& /*qName*/) override + void endElement(const QStringRef& localName) { if (localName == "wpt") { state = stateStack.takeLast(); @@ -204,13 +201,11 @@ public: //fprintf(stderr, "end ---- localName: %s name: %s\n\n", //localName.toStdString().c_str(), qName.toStdString().c_str()); } - return true; } - bool characters(const QString& x) override + void characters(const QString& x) { textChars = x; - return true; } }; @@ -224,13 +219,36 @@ bool Gpx::read(const QString& fileName) return false; } - QXmlInputSource xmlIn(&file); - - QXmlSimpleReader reader; + QXmlStreamReader reader(&file); GpxHandler gpxHandler; - reader.setContentHandler(&gpxHandler); - if (reader.parse(xmlIn)) { + for (bool atEnd = false; !reader.atEnd() && !atEnd;) { + reader.readNext(); + // do processing + switch (reader.tokenType()) { + case QXmlStreamReader::StartElement: + gpxHandler.startElement(reader.name(), reader.attributes()); + break; + + case QXmlStreamReader::EndElement: + gpxHandler.endElement(reader.name()); + break; + + case QXmlStreamReader::Characters: + gpxHandler.characters(reader.text().toString()); + break; + + case QXmlStreamReader::EndDocument: + case QXmlStreamReader::Invalid: + atEnd = true; + break; + + default: + break; + } + } + + if (!reader.hasError()) { wayPoints = gpxHandler.wptList; tracks = gpxHandler.trkList; routes = gpxHandler.rteList; diff --git a/gui/gpx.h b/gui/gpx.h index cb01396fb..a09d40dbe 100644 --- a/gui/gpx.h +++ b/gui/gpx.h @@ -23,9 +23,12 @@ #ifndef GPX_H #define GPX_H -#include -#include -#include "latlng.h" +#include // for QDateTime +#include // for QList +#include // for QString +#include // for foreach +#include "latlng.h" // for LatLng + //------------------------------------------------------------------------ class GpxItem -- 2.30.2